package com.yang.design_patterns.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体的业务类
 *
 * @author 杨 强
 * @package com.yang.design_patterns.observer
 * @createTime 2022-11-09 16:39
 */
public class ConcreteSubject implements Subject {

    /**
     * 观察这个业务类的观察者集合, 后面这个业务有通知的时候就会通知这些观察者
     */
    private List<Observer> observers = new ArrayList<Observer>();


    /**
     * 添加观察者
     * @param observer 观察者
     */
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    /**
     * 移除观察者
     * @param observer
     */
    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    /**
     * 通知观察者
     * @param message 和观察者
     */
    @Override
    public void notifyObservers(Message message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}
